/**
 * @ProjectName:exam
 * @FileName: ProjectIndexController.java
 * @PackageName: edu.xpu.project.manager
 * @Company:北京有生博大软件有限公司（西安分公司）
 * @Copyright (c) 2017,RiseSoft  All Rights Reserved.
 * @date 2017年4月18日 下午6:40:19
 */
package edu.xpu.project.manager.controller;

import java.util.List;

import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;

import edu.xpu.project.analysis.model.StudentScoreAndRank;
import edu.xpu.project.user.entity.ProjectUser;
import edu.xpu.project.user.entity.ScoreEntity;
import edu.xpu.project.user.service.ProjectUserService;
import edu.xpu.project.user.service.ScoreEntityService;

/**
 * @ClassName: ProjectIndexController.java
 * @Description: 项目总入口控制器
 *
 * @author liukang
 * @date 2017年4月18日 下午6:40:19
 * @version 
 * @since JDK 1.6
 */
@Controller
@SessionAttributes(value="sessionUser")
public class ProjectIndexController {
	
	@Autowired
	private ProjectUserService projectUserService;
	@Autowired
	private ScoreEntityService entityService;
	
	/**
	 * @describe 学生成绩详情信息
	 * @date 2017年6月4日
	 * @author liukang
	 */
	@RequestMapping(value="studentScoreIndex")
	public String studentScoreIndex(ModelMap modelMap) {
		//获取学生的总名次, 总成绩
		ProjectUser projectUser = (ProjectUser) modelMap.get("sessionUser");
		//获取学生id
		Long id = projectUser.getId();
		if (id != null) {
			StudentScoreAndRank stuScoreAndRankByStuId = entityService.getStuScoreAndRankByStuId(id);
			List<ScoreEntity> findByProjectUserId = entityService.findByProjectUserId(id);
			
			ObjectMapper objectMapper = new ObjectMapper();
			String resultVals = "";
			try {
				resultVals = objectMapper.writeValueAsString(findByProjectUserId);
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			modelMap.addAttribute("stuScoreAndRank", stuScoreAndRankByStuId)
					.addAttribute("resultVals", resultVals);
		}
		
		return "student/myScoreInfo";
	}
	
	/**
	 * @describe 我的信息页面
	 * @date 2017年5月22日
	 * @author liukang
	 */
	@RequestMapping(value="myInfo")
	public String myInfo() {
		
		return "myInfo";
	}
	
	/**
	  * @MethodName: userLogOut
	  * @Description: 用户登出
	  * @return String    返回类型
	  * @throws
	  * 
	  * @Author liukang
	  * @date 2017年4月20日  下午7:09:48
	 */
	@ResponseBody
	@RequestMapping(value="/userLogOut")
	public String userLogOut(SessionStatus sessionStatus) {
		sessionStatus.setComplete();
		return "1";
	}
	
	/**
	 * @describe 用户登录
	 * @date 2017年4月19日
	 * @author liukang
	 */
	@ResponseBody
	@RequestMapping(value="userLogin")
	public String userLogin(@RequestParam(value="loginName") String loginName,
			@RequestParam(value="pwd") String pwd, ModelMap modelMap) {
		//根据用户名和密码进行登录
		ProjectUser userLogin = projectUserService.userLogin(loginName, pwd);
		//登录成功, 将用户放入session
		if (userLogin != null) {
			modelMap.addAttribute("sessionUser", userLogin);
			//判断用户类型
			Integer userType = userLogin.getUserType();
			if (userType == 1) {				//学生
				return "1";
			} else if (userType == 2) {			//老师
				return "2";
			} else if (userType == 3) {			//root
				return "3";
			}
		}
		//失败, 返回主页面
		return "0";
	}
	
	@RequestMapping(value="/studentIndex")
	public String examIndex() {
		
		return "studentIndex";
	}
	
	/**
	 * @describe 后台管理程序首页
	 * @date 2017年4月18日
	 * @author liukang
	 */
	@RequestMapping(value="managerIndex")
	public String managerIndex() {
		
		return "managerIndex";
	}
	//默认管理首页页面
	@RequestMapping(value="managerDefault")
	public String managerDefault() {
		return "managerDefault";
	}

}

